-- SPDX-License-Identifier: GPL-3.0-or-later

--------------------------------------------------
--换牌期间无效化所有技能（白银狮子那个算不算技能啊kusa）
--------------------------------------------------


--------------------------------------------------
--可供参考的本回合造成伤害的检索方案
--可以用来让全局伤害统计技能辞职，然后用这个刷新需要伤害统计的技能（如扬歌）。
--------------------------------------------------

-- local current_event = room.logic:getCurrentEvent()
-- if current_event == nil then return false end
-- local start_event = current_event:findParent(GameEvent.Turn, true)
-- if start_event == nil then return false end
-- room.logic:getEventsOfScope(GameEvent.ChangeHp, 1, function (e)
--   local damage = e.data[5]
--   if damage and damage.from then
--     room:addPlayerMark(damage.from, "v_fushen_damaged-turn")
--   end
-- end, Player.HistoryTurn)

--------------------------------------------------
--本回合造成多少伤害
--------------------------------------------------


-- Fk:addSkill(damage_checker_turn)

--------------------------------------------------
--本回合（被）某个角色指定为目标
--注释:
-- 在三国杀中，一名角色使用牌指定N个目标，将会产生N个“指定目标时”"指定目标后”时机。
-- 在Vup杀中，一名角色使用牌指定N个目标，只会产生1个“指定目标时”“指定目标后”时机。
-- 在三国杀中的“你使用牌指定一名角色为目标后”将会依次询问对每名目标是否发动技能。
-- 在Vup杀中，类似技能通常会对所有目标同时生效，或询问玩家要对哪名目标发动技能。
-- 因此targetspecified是多次分别指定所有目标，其他Vup杀技能在处理这个问题时需要携带data.firstTarget.
--------------------------------------------------


-- Fk:addSkill(target_specified_check)

--------------------------------------------------
--本局游戏中使用的总牌数。
--适用范围：三叹等。
--注释：根据三叹可以确认，Fk类的技能同时机优先级低于当前回合逆时针角色，其余不确定。
--------------------------------------------------

-- Fk:addSkill(card_use_checker)

--------------------------------------------------
--标记清理者。
--涉及：获得/失去技能时的标记清理（待定，会涉及无忌和袭穴），
--      离开手牌/进入弃牌堆/拥有者变化清理cardmark【在mark末尾前加上-cardmark!ldc*，ldc根据代码需要填写】。
--如果后续不能在mark名字上加特殊符号的处理方案：此类技能在游戏开始/获得技能的时候用insertifneed将这种标记增加在指定的roomtag里，后续每一次遍历牌上的mark是否在roomtag里，在则触发。
--------------------------------------------------


--------------------------------------------------
--私家牌堆清理者。
--涉及：临时除外的牌返回玩家牌区；如果不符合要求的将进入弃牌堆。【在mark末尾前加上-pile!tr*，tr根据代码需要填写】。
--如果后续不能在mark名字上加特殊符号的处理方案：此类技能在游戏开始/获得技能的时候用insertifneed将这种标记增加在指定的roomtag里，后续每一次遍历私家牌堆上的名字是否在roomtag里，在则触发。
--后续看看死人了之后这种牌会不会自己被清理掉，应该会？
--------------------------------------------------

--------------------------------------------------
--装备技能失效 Vup杀特供版


--------------------------------------------------
--特殊显示：角色性别
--------------------------------------------------

local v_gender_show = fk.CreateTriggerSkill{
  --（刚需）技能认证名
  name = "v_gender_show",
  global = true,
  priority = 0.1,
  mute = true,
  --技能为锁定技，满足条件后强制发动
  frequency = Skill.Compulsory,
  --时机：造成伤害时
  events = {fk.GameStart},
  --触发条件：
  --（造成伤害时）触发时机的角色为遍历到的角色，
  --             造成的伤害大于0, 伤害种类为冰属性，
  --             伤害来源存在且在场。
  --             伤害目标存在且在场。
  --             来源可以弃置目标牌（看情况补，先补有牌）。
  can_trigger = function(self, event, target, player, data)
    local room = player.room
    local  blacklist={"jbsnew_heg_mode"}
    return not table.contains(blacklist,room.settings.gameMode)
  end,
  on_use = function(self, event, target, player, data)
    local room = player.room
    if player.gender == General.Male then
      room:setPlayerMark(player, "@!v_male", 1)
    elseif player.gender == General.Female then
      room:setPlayerMark(player, "@!v_female", 1)
    elseif player.gender == General.Agender then
      room:setPlayerMark(player, "@!v_agender", 1)
    elseif player.gender == General.Bigender then
      room:setPlayerMark(player, "@!v_bigender", 1)
    end
  end,
}

--------------------------------------------------
--特殊机制：真实轮次
--------------------------------------------------

--------------------------------------------------
--特殊机制：过劳机制
--本写法下，可能在多并发的前提下降低游戏的运行效率，如非所有模式都可能用到，建议避免使用本函数。
--------------------------------------------------


--------------------------------------------------
--特殊机制：冰霜伤害
--控制状态时请尽量避免点同一张牌（太蒸了！估计是askforcardchosen的UI不刷新牌的问题）。
--------------------------------------------------


-- Fk:addSkill(v_ice_type_damage)

VslAuxSkills = {
  v_gender_show,
}

for _,i in ipairs(VslAuxSkills) do
  table.insert(AuxSkills, i)
end
